home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Language/OS - Multiplatform Resource Library
/
LANGUAGE OS.iso
/
sather
/
faq.txt
< prev
next >
Wrap
Text File
|
1994-07-10
|
18KB
|
430 lines
------------------------------------------------------------------------------
The following is a Sather FAQ; thanks to all who contributed. This
will be sent out once every few months. If you have suggestions for
the inclusion of other useful information, please send email to
sather-admin@icsi.berkeley.edu.
.___________________________________.
| |\
| SATHER FREQUENTLY ASKED QUESTIONS |\
| August 16, 1993 |\
|___________________________________|\
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
Q 1: What is Sather?
Q 2: Is Sather a subset or superset of Eiffel?
Q 3: Where does the name "Sather" come from? How do I pronounce it?
Q 4: What does the "Hello World" program look like?
Q 5: Where can I get a description of Sather?
Q 6: Where can I get other information on Sather?
Q 7: Are there freely available implementations of Sather?
Q 8: What is the size of the package?
Q 9: Where can I get the latest implementation?
Q10: The distribution emacs directory is empty. Where is the Emacs support?
Q11: What is the future of Sather?
Q12: What does the Eiffel community think about Sather?
Q13: Is there a way to reduce recompiles further than "-fast"?
Q14: Is the quality of Sather sufficiently useful for real world products?
Q15: I want to use sdb on a ... workstation. What can I do?
Q16: Can I get Sather if I don't have FTP access?
------------------------------------------------------------------------------
Q 1: What is Sather?
~~~~~~~~~~~~~~
Sather is an object oriented language which aims to be simple,
efficient, interactive, safe, and non-proprietary. It aims to meet the
needs of modern research groups and to foster the development of a
large, freely available, high-quality library of efficient
well-written classes for a wide variety of computational tasks. It was
originally based on Eiffel but now incorporates ideas and approaches
from several languages. One way of placing it in the "space of
languages" is to say that it attempts to be as efficient as C, C++, or
Fortran, as elegant and safe as Eiffel or CLU, and to support
interactive programming and higher-order functions as well as Common
Lisp, Scheme, or Smalltalk.
Sather has garbage collection, statically-checked strong typing,
multiple inheritance, separate implementation and type inheritance,
parameterized classes, dynamic dispatch, iteration abstraction,
higher-order routines and iters, exception handling, assertions,
preconditions, postconditions, and class invariants. The development
environment integrates an interpreter, a debugger, and a
compiler. Sather code can be compiled into C code and can efficiently
link with C object files.
Sather has a very unrestrictive license aimed at encouraging
contribution to the public library without precluding the use of
Sather for proprietary projects.
Q 2: Is Sather a subset or superset of Eiffel?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Neither. Valid Eiffel programs are not Sather programs, nor vice
versa. Sather 0.2 was closer to being a subset of Eiffel 2.0 but even
then introduced several distinct constructs primarily to improve
computational performance. Eiffel 3.0 has expanded significantly in a
different direction. Sather 1.0 has introduced several new constructs
(eg. iteration abstraction, higher order routines, object
constructors, routine and iter overloading, contravariant class
interfaces, typecase) which makes the two languages quite distinct
now.
Q 3: Where does the name ``Sather'' come from? How do I pronounce it?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Sather language gets its name from the Sather Tower (popularly
known as the Campanile), the best-known landmark of the University of
California at Berkeley. A symbol of the city and the University, it
is the Berkeley equivalent of the Golden Gate bridge. Erected in
1914, the tower is modeled after St. Mark's Campanile in Venice,
Italy. It is smaller and a bit younger than the Eiffel tower, and
closer to most Americans -- and lovers of Venice of course. Yet, at
307 feet it houses 50 tons of human, dinosaur and other animal bones
mostly collected from the La Brea Tar Pits. Unseen by most visitors
the collection covers six floors of the tower. The way most people say
the name of the language rhymes with "bather".
Q 4: What does the ``Hello World'' program look like?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In Sather 0.2, it looks like:
class HELLO is
main is OUT::s("Hello World!").nl end
end
In Sather 1.0, it looks like:
class HELLO is
main is #OUT + "Hello World!\n" end
end
Q 5: Where can I get a description of Sather?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Sather language definition is available via ftp from
/pub/sather at ftp.ICSI.Berkeley.EDU. See the file README for more
details.
S. Omohundro: "The Sather Language" contains the definition of the
currently available implementation.
S. Omohundro: "The Sather 1.0 Specification" contains the
definition of the revised Sather language. The 1.0 implementation is
not yet available. The table of contents of the 1.0 spec is:
1 Introduction
2 Types and Classes
2.1 Class definition lists
2.2 Class definitions
2.3 Type specifiers
2.4 Type parameter constraints and defaults
2.5 Subtyping
3 Features
3.1 Constant attribute definitions
3.2 Shared attribute definitions
3.3 Object attribute definitions
3.4 Routine definitions
3.5 Iter definitions
3.6 `include' clauses
4 Statements
4.1 Declaration statements
4.2 Simple assignment statements
4.3 Tuple assignment statements
4.4 `if' statements
4.5 `loop' statements
4.6 `return' statements
4.7 `yield' statements
4.8 `quit' statements
4.9 `case' statements
4.10 `typecase' statements
4.11 `assert' statements
4.12 `protect' statements
4.13 `raise' statements
4.14 Expression statements
5 Expressions
5.1 Local access expressions
5.2 Routine and iter call expressions
5.3 `void' expressions
5.4 Value and reference object constructor expressions
5.5 Bound routine and iter constructor expressions
5.6 Syntactic sugar expressions
5.7 `and' expressions
5.8 `or' expressions
5.9 `not' expressions
5.10 Equality and inequality test expressions
5.11 `initial' expressions
6 Lexical Structure
6.1 Boolean literal expressions
6.2 Character literal expressions
6.3 String literal expressions
6.4 Integer literal expressions
6.5 Floating point literal expressions
7 Special features
7.1 `type'
7.2 `id'
7.3 `copy'
7.4 `destroy'
7.5 `str'
7.6 `while!', `until!', and `break!'
7.7 `invariant'
7.8 `main'
8 Built-in classes
9 Interfacing with other languages
10 Acknowledgements
Q 6: Where can I get other information on Sather?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The newsgroup "comp.lang.sather" is devoted to discussion of Sather
issues. All articles posted to this group are archived in
"pub/sather/undigest/comp.lang.sather" on "ftp.icsi.berkeley.edu".
There is a Sather mailing list maintained at the International
Computer Science Institute (ICSI). Since the formation of the
newsgroup, this list is primarily used for announcements. To be added
to or deleted from the Sather list, send a message to
sather-request@ICSI.Berkeley.EDU.
If you have problems with Sather or related questions that are not of
general interest, mail to
sather-admin@ICSI.Berkeley.EDU.
This is also where you want to send bug reports and suggestions for
improvements. The archives of the Sather mailing list are available
via anonymous ftp from pub/sather at ftp.ICSI.Berkeley.EDU.
This archive also contains Sather-related technical reports and papers
in the subdirectory "paper". See the README files for more
details. Besides the language definitions listed above, you can
retrieve, for instance:
license.txt: The Sather library general public license describing
restrictions on using Sather library classes.
TR91034.ps.Z: "Sather Language Design and Performance Evaluation",
by Chu-Cheow Lim and Andreas Stolcke.
TR91047.ps.Z: "CLOS, Eiffel and Sather: A comparison",
by Heinz W. Schmidt and Stephen M. Omohundro.
Q 7: Are there freely available implementations of Sather?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
There are currently two implementations available for free. Both
share a rich set of library classes and a powerful Emacs/Epoch
programming environment, but differ in the compiler and runtime
system. One is by the International Computer Science Institute,
Berkeley, with additions and ports by the Division of Information
Technology, Canberra, of the Australian CSIRO, and one by the
University of Karlsruhe, Germany.
Karlsruhe Sather supports:
* SPARC SPARCstation running SunOS 4.1
It includes the `typecase' construct of Sather 1.0. Its runtime system
implements dispatching more efficiently, and supports hardware and
operating system exceptions via the Sather 0.2 exception handling
mechanism. Moreover its closed compilation approach eliminates all
unused features and leads to more compact executables.
ICSI Sather supports:
* DS5000 Ultrix 4.2
* HP300 HP 9000/300 running HP-UX 8.0
* HPPA HP 700/800 running HP-UX 8.0
* MIPS RC6280/RC3230
* NeXT Release 2.1
* SCO SYSV R3.2
* Sequent Symmetry DYNIX(R) V3.0
* Sony NEWS 3000
* SPARC SunOS 4.1
* SUN386 Sun 386i running SunOS 4.0
Other Ports known to sather-admin@ICSI.Berkeley.EDU:
* IBM RS6000 AIX 3.1
* SGI Iris Irix 4.0
* SGI R4000 IRIX 4.0
* MEIKO Multiprocessor INMOS T800, INTEL I860 computing surface
The current version, 0.2, implements a beta release of the language,
that helped determine the best features of the upcoming Sather 1.0.
The main changes and additions in Sather 1.0 are:
* type-safety
* invariants
* separation of inheritance and subtyping
* value, function, and iterator types
* overloading
The Sather distribution includes a user manual, compiler, debugger,
runtime library, applications libraries and an Emacs-based class
browser, documenter, syntax-oriented editing and source-level
debugging interface.
The compiler generates C as an intermediate language, and should be
fairly easy to port. Except for the very lowest levels of the runtime
system and debugger interface (based on GNU gdb), the entire system is
written in Sather.
Q 8: What is the size of the package?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The tar.Z file is 4+ Mbytes, and when the system is installed it
requires 20+ Mbytes including libraries.
Q 9: Where can I get the latest implementation?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Version 0.2i is the latest ICSI release available via ftp from
* 128.32.201.7 USA /pub/sather ftp.ICSI.Berkeley.EDU
* 129.26.8.90 EUROPE /pub/Sather ftp.gmd.DE
* 133.137.4.3 JAPAN /pub/lang/sather sra.CO.JP
* 192.41.146.1 AUS /pub/sather lynx.csis.dit.CSIRO.AU
Here is a typical dialog (omitting some of the response):
> mkdir sather
> cd sather
> ftp ftp.icsi.berkeley.edu
Connected to icsia.ICSI.Berkeley.EDU.
Name (ftp.icsi.berkeley.edu:clinton): ftp
331 Guest login ok, send e-mail address as password.
Password:
230 Guest login ok, access restrictions apply.
ftp> cd pub/sather
250 CWD command successful.
ftp> bin
200 Type set to I.
ftp> get sa-0.2i.tar.Z
ftp> bye
> uncompress sa-0.2i.tar.Z
> tar xvf sa-0.2i.tar
> less README
> less doc/INSTALL
> less doc/STARTING
Q10: The distribution emacs directory is empty. Where is the Emacs support?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Emacs support is now unbundled because it requires adaptations to
new Emacs or Epoch releases at rates independent of the ongoing Sather
development. The latest version can be found in the directory
contrib/Elisp.tar.Z on the distribution hosts.
Q11: What is the future of Sather?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The first "official" release of Sather will be version 1.0. Work is
currently underway on a combined compiler/interpreter/debugger.
Initially it will compile into C for portability, but several groups
have expressed interest in producing native compilers. The 1.0
compiler generates an intermediate form which should be possible to
pass to compiler back ends (eg. that used in GCC).
Several institutions have expressed interest in using Sather as a
teaching language. Its combination of simplicity, support for modern
programming concepts, and free availability should make it ideal for
this purpose. A book is being written to introduce the language and
libraries.
Parallel Sather (pSather) is a parallel version of the language,
developed and in use at ICSI. pSather addresses virtually shared,
non-uniform-memory-access multiprocessor architectures. It adds
threads, synchronization, data distribution, and locality. Multiple
threads can execute in one object. A distinguished class GATE
combines various dependent low-level synchronization mechanisms
efficiently: locks, futures, and conditions. Implementations include
CM-5, Sequent Symmetry, and Sparcs. (Contact: clim@ICSI.Berkeley.EDU)
Reports and papers on pSather may be obtained by anonymous ftp from
/pub/sather/psather.papers at ftp.ICSI.Berkeley.EDU. A new version of
pSather based on Sather 1.0 is under development.
Data-parallel Sather (dpSather) is a recent experiment for studying
fine-grain deterministic parallelism at the Australian CSIRO and the
Australian National University, Canberra. Shaped collections, in the
sense of the Paralation model, are classes encapsulating locality,
data mapping and redistribution. Parallelism is limited to be
interference free. Implementations are under development for MasPar
and Fujitsu AP1000. (Contact: hws@csis.dit.CSIRO.AU) Reports and
papers on dpSather may be obtained by anonymous ftp from
/pub/sather/dpsather.papers at lynx.csis.dit.CSIRO.AU.
Q12: What does the Eiffel community think about Sather?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The following extract is taken from a recent Eiffel FAQ:
"Sather is a new language patterned after Eiffel, but emphasizing
efficiency and programmer convenience over software correctness,
reusability, and maintenance.
"Sather simplifies some Eiffel constructs, eliminates others and adds
some of its own such as built-in arrays and programmer specified
dynamic dispatching. It compiles quickly and produces smaller
executables than Eiffel 2.3.4. The Sather environment includes an
Emacs editing environment, a debugger, and several hundred library
classes.
"The 1.0 release of Sather is now imminent. It adds many new features
that should prove attractive to creators of advanced mathematical
based software. Sather 1.0 is no longer simpler than Eiffel. In
fact, the best way to think of Sather is as Eiffel for PhD's. Sather
is still very efficient, especially for a portable, non-commercial
language."
Q13: Is there a way to reduce recompiles further than "-fast"?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can control the granularity of incremental compilation by the
classes you put in one file. The major fraction of compilation time is
spent in the C compilation. Incremental compilation only keeps track
of file time-stamps. For correctness, the compiler is conservative in
deciding what to recompile. The -fast compilation option avoids
overwriting target C files that have not changed from one compilation
to the next, even though sources may have changed. "make" takes care
of further target dependencies from there.
Q14: Is the quality of Sather sufficiently useful for real world products?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The tools in the system including compiler, debugger and Emacs support
have been quite stable since the first release in mid 1991. At ICSI,
we have developed several moderate-sized programs, including a
connectionist simulator. It has also been used in class teaching.
Your needs may or may not be the same though.
Q15: I want to use sdb on a ... workstation. What can I do?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
The Sather debugger, sdb, is based on GNU gdb 3.6. The distribution
contains only the SPARC version. If you have gdb for a different
architecture, it should be easy to get sdb running, too. Gdb has a
few machine dependent files. Sdb does not directly depend on these
files. You want to replace these files using the respective gdb 3.6
files for your architecture.
Q16: Can I get Sather if I don't have FTP access?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ICSI is not set up to deliver Sather other than by anonymous ftp.
Fortunately, Prime Time Freeware (PTF) is a set of ISO-9660 CDroms
filled with 3GB of freeware, issued semi-annually and it includes the
Sather distribution. The latest issue of PTF vol 2 contains ICSI
Sather 0.2i. PTF is distributed via bookstores and mail. You can
reach PTF using:
Email: ptf@cfcl.com
Fax: [1] (408) 433 0727
Voice: [1] (408) 433 9662
Mail: Prime Time Freeware
370 Altair Way, #150E
Sunnyvale, CA 94086
USA